The automatic generation of desired results based on user's editing actions has been investigated in the literature of “programming by example” or “programming by demonstration”. Relevant articles include H. Lieberman: Programming by example. Communications of the ACM, Vol. 43, No. 3, pp. 73-74 (2000), and Allen Sypher et al. (Eds.): Watch What I Do: Programming by Demonstration. pp. 1-11, The MIT Press, Cambridge, Mass. (1993). The motivation behind the programming by example approach is that a user's knowledge can be exploited somehow for the creation of a program to perform a task repeatedly, if the user knows how to perform the task manually. The task in the automatic generation of an edited markup is to generate an updated markup from a concrete markup and the transformation of such concrete markup is quite easy when it can be done on a graphical editor. There are works on the generation of transformation scripts for a concrete markup including K. Ono, T. Koyanagi, M. Hori, and G. Kondoh: Creation of Rendering Style for Structured Documents by Demonstration. Filed as Docket JP919990313JP1 (2000) and T. Koyanagi, K. Ono, and M. Hori: Demonstrational interface for XSLT stylesheet generation. Proceedings of Extreme Markup Languages 2000, pp. 197-211, Montreal, Canada (2000). However, the existing works only deal with the script generation, and do not consider the idea of iterative refinement.
Existing automatic refinement can be done by standardized stylesheet languages such as Cascading Style Sheet (CSS) and XSL Transformation Language (XSLT). Relevant articles include those found in “Cascading Style Sheets, level 1. W3C Recommendation,” which can be accessed on the web at w3.org/TR/REC-CSS1 (1996), and “XSL Transformations (XSLT) Version 1.0. W3C Recommendation,” which can be accessed at the web page at w3.org/TR/xslt (1999). The CSS can be used only for the specification of presentation properties (e.g., font face, margin width, and textual alignment), but does not allow transformation or structural changes of a concrete markup and does not suffice for full-featured iterative refinement. On the other hand, XSLT allows arbitrary transformation of concrete markup including structural changes. However, the XSLT is a language designed for automatic transformation rather than interactive refinement. Actually, the current XSLT engines does not allow the recording of transformation history, and cannot be used for applying a recorded edit history to a concrete markup to produce an updated markup.
It is, therefore, an objective of the present invention to provide a system and method for iterative refinement of generated user-interface markups.